home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
SGI Freeware 2002 November
/
SGI Freeware 2002 November - Disc 1.iso
/
dist
/
fw_curl.idb
/
usr
/
freeware
/
catman
/
p_man
/
cat3
/
libcurl.Z
/
libcurl
Wrap
Text File
|
2002-07-08
|
6KB
|
148 lines
libcurl(3) libcurl overview libcurl(3)
NNAAMMEE
libcurl - client-side URL transfers
DDEESSCCRRIIPPTTIIOONN
This is an overview on how to use libcurl in your C pro
grams. There are specific man pages for each function men
tioned in here. There's also the libcurl-the-guide docu
ment for a complete tutorial to programming with libcurl.
There are a dozen custom bindings that bring libcurl
access to your favourite language. Look elsewhere for doc
umentation on those.
All applications that use libcurl should call
_c_u_r_l___g_l_o_b_a_l___i_n_i_t_(_) exactly once before any libcurl func
tion can be used. After all usage of libcurl is complete,
it mmuusstt call _c_u_r_l___g_l_o_b_a_l___c_l_e_a_n_u_p_(_). In between those two
calls, you can use libcurl as described below.
When using libcurl's "easy" interface you init your ses
sion and get a handle, which you use as input to the easy
interface functions you use. Use _c_u_r_l___e_a_s_y___i_n_i_t_(_) to get
the handle. There is also the so called "multi" interface,
try the _l_i_b_c_u_r_l_-_m_u_l_t_i_(_3_) man page for an overview of that.
You continue by setting all the options you want in the
upcoming transfer, most important among them is the URL
itself (you can't transfer anything without a specified
URL as you may have figured out yourself). You might want
to set some callbacks as well that will be called from the
library when data is available etc. _c_u_r_l___e_a_s_y___s_e_t_o_p_t_(_) is
there for this.
When all is setup, you tell libcurl to perform the trans
fer using _c_u_r_l___e_a_s_y___p_e_r_f_o_r_m_(_). It will then do the entire
operation and won't return until it is done (successfully
or not).
After the transfer has been made, you can set new options
and make another transfer, or if you're done, cleanup the
session by calling _c_u_r_l___e_a_s_y___c_l_e_a_n_u_p_(_). If you want per
sistant connections, you don't cleanup immediately, but
instead run ahead and perform other transfers using the
same handle. See the chapter below for Persistant Connec
tions.
There is also a series of other helpful functions to use.
They are:
ccuurrll__vveerrssiioonn(())
displays the libcurl version
ccuurrll__ggeettddaattee(())
converts a date string to time_t
ccuurrll__ggeetteennvv(())
portable environment variable reader
ccuurrll__eeaassyy__ggeettiinnffoo(())
get information about a performed trans
fer
ccuurrll__ffoorrmmaadddd(())
helps building a HTTP form POST
ccuurrll__ffoorrmmffrreeee(())
free a list built with curl_form
parse()/curl_formadd()
ccuurrll__sslliisstt__aappppeenndd(())
builds a linked list
ccuurrll__sslliisstt__ffrreeee__aallll(())
frees a whole curl_slist
ccuurrll__mmpprriinnttff(())
portable printf() functions
ccuurrll__ssttrreeqquuaall(())
portable case insensitive string compar
isons
LLIINNKKIINNGG WWIITTHH LLIIBBCCUURRLL
On unix-like machines, there's a tool named curl-config
that gets installed with the rest of the curl stuff when
'make install' is performed.
curl-config is added to make it easier for applications to
link with libcurl and developers to learn about libcurl
and how to use it.
Run 'curl-config --libs' to get the (additional) linker
options you need to link with the particular version of
libcurl you've installed.
For details, see the curl-config.1 man page.
LLIIBBCCUURRLL SSYYMMBBOOLL NNAAMMEESS
All public functions in the libcurl interface are prefixed
with 'curl_' (with a lowercase c). You can find other
functions in the library source code, but other prefixes
indicate the functions are private and may change without
further notice in the next release.
Only use documented functions and functionality!
PPOORRTTAABBIILLIITTYY
libcurl works eexxaaccttllyy the same, on any of the platforms it
compiles and builds on.
TTHHRREEAADDSS
Never ever call curl-functions simultaneously using the
same handle from several threads. libcurl is thread-safe
and can be used in any number of threads, but you must use
separate curl handles if you want to use libcurl in more
than one thread simultaneously.
PPEERRSSIISSTTAANNTT CCOONNNNEECCTTIIOONNSS
Persistent connections means that libcurl can re-use the
same connection for several transfers, if the conditions
are right.
libcurl will *always* attempt to use persistent connec
tions. Whenever you use curl_easy_perform(), libcurl will
attempt to use an existing connection to do the transfer,
and if none exists it'll open a new one that will be
subject for re-use on a possible following call to
curl_easy_perform().
To allow libcurl to take full advantage of persistent con
nections, you should do as many of your file transfers as
possible using the same curl handle. When you call
curl_easy_cleanup(), all the possibly open connections
held by libcurl will be closed and forgotten.
Note that the options set with curl_easy_setopt() will be
used in on every repeat curl_easy_perform() call
libcurl 7.9.6 19 March 2002 libcurl(3)